<?php

namespace Admin\Controller;

class CategoryController extends AdminController {
    public function index(){
        $tree = $this['Category']->getTree();
//        dump($tree);exit;

        $this->assign('tree',$tree);

        $this->display('index');
    }

    /**
     * 分类编辑控制器.
     * 传入id时，是编辑模式；无id时，是新增模式；即使是编辑模式，也需要传入pid，为了与新增模式兼容，减少为编辑模式写特定的代码
     *
     * @param null $id
     * @param null $pid
     */
    public function edit($id = null, $pid = null){
        if ( IS_POST ){
            $info = $_POST;
            if ( $id = $this['Category']->update($info) ) {
                $info['id'] = $info['id']?$info['id']:$id;
                // 设置前台操作结果提示
                $this->alert['msg'] = '操作成功';
                $this->alert['status'] = 1;
            } else {
                // 设置前台操作结果提示
                $this->alert['msg'] = '操作失败 '.$this['Category']->getError();
                $this->alert['status'] = 0;
            }

            // 前台操作提示
            $this->alert();

        } else {
            // 编辑页面
            if ( $id ){
                // 存在id，为修改
                $info = $this['Category']->info(['id'=>$id]);
            } else {
                // 不存在id，为新增
                $info = ['hide'=>0,'pid'=>$pid,'is_parent'=>0,'status'=>0,'allow_publish'=>1,'is_child'=>0];
            }
        }

        // 获取模型数据
        $models = $this['Model']->get();

        // 获得父级分类
        $info['parent'] = $this['Category']->info(['id'=>$pid]);

        $this->assign('info',$info);
        $this->assign('models',$models);

        $this->display();
    }

    public function delete($id = null){
        $id = array_unique((array)$id);
        $res = $this['Category']->remove($id);
        if($res){
            $this->success('删除成功');
        }else{
            $this->error('删除失败 '.$this['Category']->getError());
        }
    }


    /**
     * 显示分类树，仅支持内部调
     * @param  array $tree 分类树
     */
    public function tree($tree = null){
//        C('_SYS_GET_CATEGORY_TREE_') || $this->_empty();
        $this->assign('tree', $tree);
        $this->display('tree');
    }

    public function api($method = null){
        switch($method){
            case 'update':
                if ( !I('post.id',0) ) {
                    $this->alert['msg'] = '无id';
                    goto a;
                }
                if ( !I('post.name','') ){
                    $res['msg'] = 'update方法需要字段名称name';
                    goto a;
                }

                $data[I('post.name','')] = I('post.value','');
                $data['id'] = I('post.id');
                if ( $this['Category']->update($data) ) {
                    $this->alert['status'] = 1;
                    $this->alert['msg'] = '更新成功';
                    $this->alert['data'] = $_POST;
                } else {
                    $this->alert['status'] = 0;
                    $this->alert['msg'] =   $this['Category']->getError();
                }
                break;
            default:
                $this->alert['msg'] = '无法匹配方法';
        }
        a:
        return $this->ajaxReturn($this->alert);
    }
}